<?php
//Класс для работы с базой данной
class DB {
    static private $db_link;    
    static private $query_log;
    static private $prefix;
		
    //Устанавливаем соединение с базой данной
    static function initialize($params) {
        DB::$query_log = array();
        
        if (!$params) return;

        extract($params);
		DB::$prefix = $prefix;
        DB::$db_link = mysql_connect($host, $user, $password);
        mysql_select_db($database, DB::$db_link);
        mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'", DB::$db_link);    
    }
    
    //Выполнение произвольного запроса
    static function query($query) {
    	$query = str_replace('?_', DB::$prefix, $query);
        $result = mysql_query($query, DB::$db_link);
        $error = ($result)? FALSE : mysql_error();
        DB::$query_log[] = array('query'=>$query, 'error'=>$error);

        return $result;
    }
    
    //Выполнение вставки
    static function insert($query) {
        DB::query($query);
        return mysql_insert_id(DB::$db_link);
    }
    
    //Запрос на выборку данных
    static function select($query) {
        $db_res = DB::query($query);
        if (!$db_res) return FALSE;
            
        $result = array();        
        while ($row = mysql_fetch_assoc($db_res))
            $result[] = $row;

        return $result;
    }
    
    //Получение одной записи
    static function selectOne($query) {
        $query .= ' LIMIT 1';
        $rows = DB::select($query);
        if ($rows) return $rows[0];
        return false;
    }

    static function getQueryLog() {
        return DB::$query_log;
    }
    
    //Вывод информации для быстрой отладки
    static function printLog() {
        echo '<pre>';
        print_r(DB::$query_log);
        echo '</pre>';
    }
    
    static function numOfQueries() {
        return count(DB::$query_log);
    }   
}
?>